import request from '@/utils/request'

// 功能节点相关接口
export const rule = {
  // 获取功能节点列表 - 优化：默认限制数量，避免一次性加载过多数据
  getRuleList: (params?: any) => {
    // 默认限制数量，避免一次性加载所有数据导致性能问题
    const defaultParams = {
      limit: params?.tree ? 1000 : 50, // 树形结构最多1000条，普通列表50条
      page: params?.page || 1,
    }
    const finalParams = { ...defaultParams, ...params }

    return request({
      url: '/api/home/rule/list',
      method: 'get',
      params: finalParams,
    })
  },

  // 新增功能节点 - 使用RESTful API
  addRule: (data: any) => {
    return request({
      url: '/api/home/rule', // POST /api/home/rule
      method: 'post',
      data,
    })
  },

  // 编辑功能节点 - 使用RESTful API
  editRule: (data: any) => {
    return request({
      url: `/api/home/rule/${data.id}`, // PUT /api/home/rule/:id
      method: 'put',
      data,
    })
  },

  // 删除功能节点 - 使用RESTful API
  deleteRule: (data: any) => {
    return request({
      url: `/api/home/rule/${data.id}`, // DELETE /api/home/rule/:id
      method: 'delete',
      data,
    })
  },

  // 清除规则缓存
  clearRuleCache: () => {
    return request({
      url: '/api/home/rule/clearCache',
      method: 'post',
    })
  },

  // 获取统计数据 - 优化：独立接口，避免加载所有数据
  getStats: () => {
    return request({
      url: '/api/home/rule/stats',
      method: 'get',
    })
  },

  // 获取模块列表 - 使用专门的模块API
  getModules: () => {
    return request({
      url: '/api/home/module/set',
      method: 'get',
    })
  },
}

// 为了兼容原来的导入方式，我们再导出一次这些函数
export const getRuleList = rule.getRuleList
export const saveRule = (data: any) => {
  // 根据是否有id判断是新增还是编辑
  if (data.id && data.id > 0) {
    return rule.editRule(data)
  } else {
    return rule.addRule(data)
  }
}
export const deleteRule = rule.deleteRule
export const clearRuleCache = rule.clearRuleCache
